package com.ruoyi.points.domain;

import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.youyou.domain.SysYouYouUser;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 积分总数对象 sys_user_profile
 * 
 * @author hh
 * @date 2025-08-18
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysUserProfile extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    
    //一对一
    private SysYouYouUser sysYouYouUser;
    
    /** 用户名（非数据库字段，用于查询） */
    private transient String userName;
    
    /** 主键ID */
    private Long id;

    /** 关联的用户ID（对应sys_user.id） */
    @Excel(name = "关联的用户ID", readConverterExp = "对=应sys_user.id")
    private Long userId;

    /** 会员类型：非会员/专属题库/全站会员 */
    @Excel(name = "会员类型：非会员/专属题库/全站会员")
    private String memberType;

    /** 会员到期时间 */
    private LocalDateTime memberExpire;

    /** 积分总数 */
    @Excel(name = "积分总数")
    private Integer points;

    /** 刷题总数 */
    private Integer practiceCount;

    /** 是否删除（0-未删除，1-已删除） */
    @Excel(name = "是否删除", readConverterExp = "0=-未删除，1-已删除")
    private Integer del;

    // 枚举类型定义
    public enum MemberType {
        NONE("非会员"),
        EXCLUSIVE("专属题库"),
        GLOBAL("全站会员");

        private final String description;

        MemberType(String description) {
            this.description = description;
        }

        public String getDescription() {
            return description;
        }
    }
}
